Given an array of integers nums
sorted in non-decreasing order, find the starting and ending position of a given target
value.
If target
is not found in the array, return [-1, -1]
.
You must write an algorithm with O(log n)
runtime complexity.
Input: nums = [5,7,7,8,8,10], target = 8 Output: [3,4]
Input: nums = [5,7,7,8,8,10], target = 6 Output: [-1,-1]
Input: nums = [], target = 0 Output: [-1,-1]
0 <= nums.length <= 105
-109 <= nums[i] <= 109
nums
is a non-decreasing array.-109 <= target <= 109
implSolution{pubfnsearch_range(nums:Vec<i32>,target:i32) -> Vec<i32>{if nums.is_empty(){returnvec![-1, -1];}let n = nums.len();letmut left = 0;letmut right = n - 1;letmut ret = vec![-1, -1];while left < right {let mid = (left + right) / 2;if nums[mid] < target { left = mid + 1;}else{ right = mid;}}if nums[left] != target {returnvec![-1, -1];} ret[0] = left asi32; left = 0; right = n - 1;while left < right {let mid = (left + right + 1) / 2;if nums[mid] <= target { left = mid;}else{ right = mid - 1;}} ret[1] = left asi32; ret }}